Hm, zullen we maar beginnen?

Deze applicatie heet IPython en je kan er Python code mee uitvoeren (Python is een soort programmeertaal; een manier om aan een computer uit te leggen wat die computer voor jou moet doen).

Selecteer de cel met de som hieronder door erin te klikken (er komt dan een groene kader omheen staan) en druk op Shift+Enter of op de Play () knop hierboven om de code in de cel uit te voeren:


In [ ]:
5+11

De code is georganiseerd in cellen en als je wil kan je kan de code in de cellen aanpassen en opnieuw uitvoeren. Pas hierboven de som aan en voer ze opnieuw uit.

... doe maar, ik wacht hier even ...

"Pffff, dat kan ik ook met eender welke rekenmachine"
Klopt, maar dit is nog maar het begin; laat ons eens iets anders proberen:


In [ ]:
print("Hallo allemaal!")

IPython zal, als het commando een resultaat geeft, deze "output" onder de cell uitprinten.
En als je iets vergeet of fout typt, wordt-ie boos:


In [ ]:
print("Dit lukt dus niet"

Er wordt dan door Python geprobeerd om uit te leggen wat er mis gaat, maar dat is niet altijd 100% duidelijk. Kan je uitvissen wat er hierboven misloopt?

-Tip: het "Hallo allemaal" commando kan misschien helpen, het is maar een kleine vergetelheid, maar een computer kan van iets dergelijks helemaal in de war raken-

OK, wat kan Python nog?

Dingen onthouden

daar zijn computers goed in (zolang je de stekker niet uittrekt...) Een variabele noemen we dat. Die moet je wel een naam geven, anders vind je ze niet meer terug:


In [ ]:
a = 'Dit is een tekst'  # tekst moet je tussen aanhalingstekens '...' zetten
a = "Dit is een tekst"  # maar het mogen ook dubbele aanhalingstekens "..." zijn (als je ze maar niet door mekaar haalt)
# oh, ja en alles wat achter een # staat is commentaar, dat slaat Python gewoon over

b = 13
c = 273.15              # voor decimale cijfers, geen komma's, maar punten!

Zie, je geen resultaat, dus IPython print niets uit, maar de variabelen zitten wel in het geheugen, kijk maar:


In [ ]:
print(a, b, c)

Methodes en "dot notation" (punt notatie)

sommige "dingen" of objecten die je in Python gebruikt krijgen een soort superpowers mee in de vorm van methodes die je kan aanroepen.
Dit doe je door een punt achter het object te zetten en dan de methode te typen (opgelet, voor het aanroepen van een functie moet je altijd haakjes achter de functienaam zetten, desnoods zonder iets tussen):


In [ ]:
# bvb een tekst in hoofdletters omzetten:
a.upper()

Door na het punt op de toets te drukken, zal IPython een lijst van beschikbare methodes laten zien; zet je cursor achter het punt en type om het uit te proberen:


In [ ]:
a.

Lijstjes onthouden

Als je een lijst van objecten wil opslaan, kan dat met vierkante haakjes:


In [ ]:
minions = ['Dave','Stuart','Jerry','Jorge']
print(minions[2])
#opgelet, elementnummers beginnen te tellen bij 0, daarom wordt de derde minion in de lijst geprint!

Maar als je eigenlijk de favoriete ijsjes van de minions wil opslaan, gebruik je best een dictionary (Engels voor "woordenboek", omdat het je toelaat om dingen op te zoeken op basis van een index / sleutel):


In [ ]:
minion_ijsjes = {
    'Dave':'aardbei',              # 'Dave' is hier de sleutel, 'aardbei' is de ermee gekoppelde waarde 
    'Stuart':'vanille',
    'Jerry':['mokka', 'vanille'],  # Inderdaad, we kunnen dit nog veel ingewikkelder maken :-)
    'Jorge':'chocolade'
}
print(minion_ijsjes['Jerry'])

In [ ]:
# en begrijp je deze?
print(minion_ijsjes[minions[2]])

Loopen

-ja, dat moet echt met dubbele 'oo' en je spreekt het uit als 'loepen'-

Kan ik in plaats van maar één ook de ijsjes van alle minions printen?
nota tussendoor: range() is een functie om lijstjes van nummers te maken.


In [ ]:
print(range(4))

Dit kunnen we gebruiken om 4 keer dezelfde print te herhalen, maar telkens met één nummer hoger


In [ ]:
for nummer in range(4):
    print(minions[nummer])

Opgelet! de "whitespace" (witruimte) vóór het print commando is van belang! Zonder deze spaties zou Python niet weten wat er binnen en wat er buiten de loop valt:


In [ ]:
for nummer in range(4):
    print(nummer)
    print(minions[nummer])

Is niet hetzelfde als:


In [ ]:
for nummer in range(4):
    print(nummer)
print(minions[nummer])

We kunnen ook iets één keer herhalen voor elke minion in ons minions lijstje.


In [ ]:
for minion in minions:
    print(minion)

Of voor elke minion in ons minions lijstje de minion printen plus zijn ijsje(s) uit de minion_ijsjes dictionary


In [ ]:
for minion in minions:
    print(minion, minion_ijsjes[minion])

While is een gelijkaardig soort loop. "while" is Engels voor "terwijl" en het betekent dat de instructies in de loop uitgevoerd zullen worden terwijl aan een bepaalde voorwaarde voldaan is.
Bijvoorbeeld met een dobbelsteen gooien tot er 6 gegooid wordt:


In [ ]:
import random                   # om de random module te kunnen gebruiken; import wordt verder nog uitgelegd

worp = 0                        # een worp van 0 kan niet, maar we moeten ergens beginnen...
while worp < 6:
    worp = random.randint(1,6)  # een willekeurig getal van 1 tot 6
    print(worp)

Als je het een paar keer probeert kan je zien dat het echt willekeurig is (met Ctrl+Enter wordt de cel uitgevoerd terwijl de cursor blijft staan)

Een speciaal geval is de "while True:" constructie; aangezien aan True (Engels voor "Waar") altijd voldaan wordt, blijft dit voor eeuwig loopen, tenzij je de executie manueel onderbreekt door op de Stop knop () in de menubalk te drukken of Kernel > Interrupt te kiezen uit het dropdown menu.


In [ ]:
import time                     # om de time module te kunnen gebruiken; import wordt verder nog uitgelegd

while True:
    print('.'),                 # met de komma voorkom je dat er na elk punt een nieuwe lijn gestart wordt
    time.sleep(0.2)             # 0.2 seconden pauzeren

Druk op de Stop knop () om de executie te beëindigen.
Deze methode wordt soms gebruikt om een programma te starten dat moet blijven lopen.

Voor gevorderden: Je kan foutmeldingen neutralizeren en een dergelijke Kernel Interrupt dus op een elegante manier opvangen zonder dat IPython lelijke KeyboardInterrupts op het scherm toont.

Dat gebeurt met een "try except" constructie en wel op de volgende manier:


In [ ]:
import time

while True:
    try:                                # probeer de code uit te voeren...
        print('.'),
        time.sleep(0.2)
    except KeyboardInterrupt:           # ... en als een KeyboardInterrupt fout optreedt, toon ze dan niet, maar:
        print('\nEinde')                # print 'Einde' (op een nieuwe lijn)
        break                           # verlaat de while lus

Voorwaarden

Met een "if" uitdrukking kunnen we beïnvloeden hoe de uitvoering van de code verloopt.
"if" betekent "als" in het Engels en het laat ons toe om de computer iets wel of niet te laten doen, afhankelijk wat we erachter zetten.


In [ ]:
punten = 85
if punten > 90:
    print('Schitterend')
elif punten > 80:
    print('Zeer goed')
elif punten > 60:
    print('Goed')
else:
    print('Hm')

Bijvoorbeeld: die Jerry is me toch wat gulzig, dus:


In [ ]:
for minion in minions:
    if minion == 'Jerry':
        print('--Gulzigaard--')
    else:
        print(minion, minion_ijsjes[minion])

Echt programmeren

We kunnen in Python ook zelf functies maken en die vervolgens gebruiken; dat helpt om de code ordelijk te houden en bepaalde stukjes code maar één maal te moeten schrijven / corrigeren / onderhouden.


In [ ]:
def begroet(naam):
    print('Dag ' + naam)

Zullen we onze nieuwe functie eens uitproberen?


In [ ]:
begroet('Mariette')

En nog een extraatje

we kunnen strings (tekst variabelen) gebruiken als template om teksten samen te stellen zoals de Samenvoegen functonaliteit in tekstverwerkers zoals Microsoft Word.

Dat gebeurt met de format() functie:
'Dag {}'.format(naam)
maakt dat de accolades in de tekst vervangen worden door de waarde van de variabele


In [ ]:
def begroet(naam):
    print('Dag {}'.format(naam))

begroet('Willy')

Python libraries (Bibliotheken)

Natuurlijk zijn er al heel wat mensen die Python code geschreven hebben en veel van die code is beschikbaar in de vorm van libraries die je kant en klaar kan installeren.
Als zo'n library geïnstalleerd hebt, kan je ze importeren en de functies ervan beginnen gebruiken:


In [ ]:
import math
print("PI: {}".format(math.pi))
print("sin(PI/2): {}".format(math.cos(math.pi)))

requests is een bibliotheek om webpagina's in te laden; hier bezoeken we een openweathermap en drukken een deel van de weersvoorspelling voor Mechelen af.


In [ ]:
import requests
r = requests.get('http://api.openweathermap.org/data/2.5/weather?q=Mechelen').json()
print(r['weather'][0]['description'])

Of een quote uit de online database van iheartquotes.com


In [ ]:
import requests
r = requests.get('http://www.iheartquotes.com/api/v1/random')
print(r.text)

Er is natuurlijk nog veel meer te leren, maar dit geeft je al een goede basis om Python code te begrijpen en zelf één en ander in mekaar te knutselen. Laat het weten als je suggesties of opmerkingen hebt!

veel plezier met Python!